package com.spring.business.configure.service;

import com.spring.business.configure.entity.FileInfo;
import com.spring.business.configure.entity.SysConf;
import com.spring.business.configure.pojo.dto.DictListDTO;
import com.spring.business.configure.pojo.dto.SysConfDTO;
import com.spring.business.configure.pojo.vo.DictTypeVO;
import com.spring.business.configure.pojo.vo.SysConfVO;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 配置管理接口层
 */
public interface IConfigureService
{
	/**
	 * 根据指定数据字典类型获取数据字典值
	 * @param code
	 * @return
	 */
	DictTypeVO getDitType(String code);

	/**
	 * 根据字典类型列表获取多数据字典
	 * @param dictListDTO
	 * @return
	 */
	List<DictTypeVO> getDitTypeList(DictListDTO dictListDTO);

	/**
	 * 获取租户下指定配置项目
	 * @param tenant
	 * @return
	 */
	List<SysConf> getTenantSysConf(String tenant);

	/**
	 * 根据指定配置类型获取配置数据
	 * @param code
	 * @return
	 */
	SysConfVO getSysConf(String code);

	/**
	 * 根据指定配置类型模糊匹配配置数据
	 * @param code
	 * @return
	 */
	List<SysConf> getSysConfLike(String code);

	/**
	 * 更新租户系统参数配置
	 * @param sysConfDTO
	 */
	void updateTenantSysConf(SysConfDTO sysConfDTO);

	/**
	 * 获取用户UserID
	 * @return
	 */
	Integer getUserID();

	/**
	 * 获取序列号, 编码中增加业务编码定义
	 * @param module
	 * @return
	 */
	String getSerialCode(String module);

	/**
	 * 获取序号,长度为4.不足前面补0
	 * @param bizTag
	 * @param serialStep 步长
	 * @return
	 */
	String getSerialCodeBybizTag(String bizTag, Integer serialStep);

	/**
	 * 获取文件信息
	 * @param fileCode
	 * @return
	 */
	FileInfo getFile(String fileCode);

	/**
	 * 删除文件
	 * @param fileCode
	 * @return
	 */
	boolean deleteFile(String fileCode);

	/**
	 * 上传文件
	 * @param file
	 * @return 文件Id
	 */
	String uploadFile(@RequestPart("file") MultipartFile file);



}
